Video streams are conventionally transmitted from a server to a client over a network with a bandwidth limited and a lossy segment. In some situations, the server transmits the video stream over a bandwidth limited network to an intermediate device such as a modem or router, which then further transmits the video stream over a lossy network to the client device. The bandwidth limited network may include a wide-area network (WAN) connected to an internet service provider (e.g., digital subscriber line access multiplexer (DSLAM) or cable modem termination system (CMTS)), which is further connected to an internet service provider network.
Packet loss or errors associated with the video stream may occur along both the bandwidth-limited network and the lossy network. Packet loss or errors that occur along the bandwidth-limited network may be minimized by optimizing the level of service provided by the internet service provider. However, packet loss or errors that occur along the lossy network may be unavoidable, for example when the lossy network is a wireless network.
Conventionally, packet loss or errors associated with the video stream may be corrected using either retransmission or redundant transmission. Retransmission involves retransmitting portions of the video stream that have incurred packet loss or errors, and is widely used when sending data over TCP. Examples of retransmission include adaptive bitrate HTTP streaming which may utilize various protocols such as HLS, MPEG-DASH, Smooth Streaming, etc. However, retransmission is not suitable for low-latency applications because the round-trip time required to request and receive a replacement portion of the video stream is likely to exceed the latency budget.
Redundant transmission involves transmitting forward error correction (FEC) information with the video stream, such that packet loss or errors associated with the video stream may be corrected using the FEC information. Examples of FEC information include Low Density Parity Check Codes (LDPC) or Fountain Codes. Redundant transmission may also use mechanisms at the codec level designed to add data resiliency, for example generating frequent I-frames or periodic intra refresh. Redundant transmission uses some of the limited bandwidth available, and as such only a limited amount of FEC information may be appended to a video stream at the server for transmission across the bandwidth-limited network. The limited FEC information appended to the video stream at the server may not be sufficient for providing correction for all packet loss or errors that occur along the lossy network. Although the lossy network may not itself be bandwidth limited, the bandwidth-limited network controls the amount of FEC information that may be appended to the video stream at the server, and as such the amount of FEC information appended at the server may not be sufficient to overcome the loss or errors incurred along the lossy network.